#!/bin/bash

#auxiliarrrrr
if [ "$grupo" = "" ]; then
    grupo="/home/$USER/grupo04"
fi

# inicializacion de variables necesarias.
if [ "$LOGEXT" = "" ]; then
    LOGEXT="log"
fi

if [ "$LOGDIR" = "" ]; then 
    LOGDIR="$grupo/log"
fi

if [ "$LOGSIZE" = "" ]; then
    LOGSIZE=100 #~100kb
fi

logcommand="$1"
logtype="$2"
logmsg="$3"

# control de parametros.
if [ $# != 3 ]; then
    echo "Cantidad de parametros incorrectos"
    exit 1
fi

if [ "$logcommand" = "" ]; then
    echo "Paramentros incorrectos"
    exit 2
fi    

if [ "$logtype" != "-I" ] && [ "$logtype" != "-A" ] && [ "$logtype" != "-E" ] && [ "$logtype" != "-SE" ]; then
    echo "Paramentros incorrectos"
    exit 2
fi

if [ "$logmsg" = "" ]; then #si el mensaje es vacio, no se hace nada
    exit 0
fi    

# mostrado en pantalla.
#echo "$logmsg"

# formateo.
logdate=`date +"%m-%d-%Y %H:%M:%S"`
loguser="$USER"
logtypeletter=`echo $logtype | sed 's/-\(.*\)/\1/'`

outputmsg="$logdate-$loguser-$logcommand-$logtypeletter-$logmsg"

# guardado en log.
logfinaldir="$LOGDIR/$logcommand.$LOGEXT"

if [ ! -d $LOGDIR ]; then
    mkdir -p $LOGDIR
fi

if [ ! -s "$logfinaldir" ]; then
    echo "$outputmsg" > "$logfinaldir" 
else
    # control de tamaño.
    logactualsize=`stat -c %s $logfinaldir` 
    convertedsize=`expr "$LOGSIZE" '*' "1024"`   

    if [ $logactualsize -gt $convertedsize ]; then

        # calculo de la mitad de las lineas
        loglinestodelete=`cat $logfinaldir | wc -l`
        loglinestodelete=`expr $loglinestodelete / 2`

        # recorro el archivo y a partir de la linea loglinestodelete guardo
        count=0
        auxpath="$LOGDIR/auxlogof$logcommand.aux"
        IFS_REAL=$IFS
        IFS='
'        

        for line in `cat $logfinaldir`; do
            if [ $count -eq $loglinestodelete ]; then        
                echo "$newtextout$line" > $auxpath        
            elif [ $count -gt $loglinestodelete ]; then        
                echo "$newtextout$line" >> $auxpath        
            fi
            count=`expr $count + 1`
        done
        
        IFS=$IFS_REAL       
        mv "$auxpath" "$logfinaldir"
    fi  

    # escritura en archivo
    echo "$outputmsg" >> "$logfinaldir"
fi

# terminado
exit 0
